[DEFAULT]
data_basedir = %(here)s/user_dev

[mediagoblin]
# HTML title of the pages
html_title = string(default="GNU MediaGoblin")

# link to source for this MediaGoblin site
source_link = string(default="https://savannah.gnu.org/git/?group=mediagoblin")

# database stuff
sql_engine = string(default="sqlite:///%(here)s/mediagoblin.db")

# This flag is used during testing to allow use of in-memory SQLite
# databases. It is not recommended to be used on a running instance.
run_migrations = boolean(default=False)

# Where temporary files used in processing and etc are kept
workbench_path = string(default="%(data_basedir)s/media/workbench")

# Where to store cryptographic sensible data
crypto_path = string(default="%(data_basedir)s/crypto")

# Where mediagoblin-builtin static assets are kept
direct_remote_path = string(default="/mgoblin_static/")

# set to false to enable sending notices
email_debug_mode = boolean(default=True)

# Uses SSL/TLS when connecting to SMTP server
email_smtp_use_ssl = boolean(default=False)

# Uses STARTTLS when connecting to SMTP server
email_smtp_force_starttls = boolean(default=False)

# Email address which notices are sent from
email_sender_address = string(default="notice@mediagoblin.example.org")

# Hostname of SMTP server
email_smtp_host = string(default='')

# Port for SMTP server
email_smtp_port = integer(default=0)

# Username used for SMTP server
email_smtp_user = string(default=None)

# Password used for SMTP server
email_smtp_pass = string(default=None)


# Set to false to disable registrations
allow_registration = boolean(default=True)

# tag parsing
tags_max_length = integer(default=255)

# Enable/disable comments
allow_comments = boolean(default=True)

# Whether comments are ascending or descending
comments_ascending = boolean(default=True)

# Enable/disable reporting
allow_reporting = boolean(default=True)

# Enable/disable terms of service
#   ... Note: you can override the terms of service template on a
#       per-site basis...
show_tos = boolean(default=False)

# By default not set, but you might want something like:
# "%(data_basedir)s/templates/"
local_templates = string()

# Whether or not celery is set up via an environment variable or
# something else (and thus mediagoblin should not attempt to set it up
# itself)
celery_setup_elsewhere = boolean(default=False)

# Whether or not users are able to upload files of any filetype with
# their media entries -- This is useful if you want to provide the
# source files for a media file but can also be a HUGE security risk.
allow_attachments = boolean(default=False)

# Cookie stuff
csrf_cookie_name = string(default='mediagoblin_csrftoken')

# Set to true to prevent browsers leaking information through Referrers
no_referrer = boolean(default=True)

# Push stuff
push_urls = string_list(default=list())

exif_visible = boolean(default=False)
original_date_visible = boolean(default=False)

# Theming stuff
theme_install_dir = string(default="%(data_basedir)s/themes/")
theme_web_path = string(default="/theme_static/")
theme_linked_assets_dir = string(default="%(data_basedir)s/theme_static/")
theme = string()

# plugin default assets directory
plugin_web_path = string(default="/plugin_static/")
plugin_linked_assets_dir = string(default="%(data_basedir)s/plugin_static/")

# Default user upload limit (in Mb)
upload_limit = integer(default=None)

# Max file size (in Mb)
max_file_size = integer(default=None)

# Privilege scheme
user_privilege_scheme = string(default="uploader,commenter,reporter")

# Frequency garbage collection will run (setting to 0 or false to disable)
# Setting units are minutes.
garbage_collection = integer(default=60)

[jinja2]
# Jinja2 supports more directives than the minimum required by mediagoblin. 
# This setting allows users creating custom templates to specify a list of
# additional extensions they want to use.  example value:
# extensions = jinja2.ext.loopcontrols , jinja2.ext.with_
extensions = string_list(default=list())

[storage:publicstore]
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
base_dir = string(default="%(data_basedir)s/media/public")
base_url = string(default="/mgoblin_media/")

[storage:queuestore]
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
base_dir = string(default="%(data_basedir)s/media/queue")

[media:medium]
# Dimensions used when creating media display images.
max_width = integer(default=640)
max_height = integer(default=640)

[media:thumb]
# Dimensions used when creating media thumbnails
# This is unfortunately not implemented in the media
# types yet. You can help!
# TODO: Make plugins follow the media size settings
max_width = integer(default=180)
max_height = integer(default=180)

[celery]
# default result stuff
CELERY_RESULT_BACKEND = string(default="database")
CELERY_RESULT_DBURI = string(default="sqlite:///%(here)s/celery.db")

# default kombu stuff
BROKER_TRANSPORT = string(default="sqlalchemy")
BROKER_URL = string(default="sqlite:///%(here)s/kombu.db")

# known booleans
CELERY_RESULT_PERSISTENT = boolean()
CELERY_CREATE_MISSING_QUEUES = boolean()
BROKER_USE_SSL = boolean()
BROKER_CONNECTION_RETRY = boolean()
CELERY_ALWAYS_EAGER = boolean()
CELERY_EAGER_PROPAGATES_EXCEPTIONS = boolean()
CELERY_IGNORE_RESULT = boolean()
CELERY_TRACK_STARTED = boolean()
CELERY_DISABLE_RATE_LIMITS = boolean()
CELERY_ACKS_LATE = boolean()
CELERY_STORE_ERRORS_EVEN_IF_IGNORED = boolean()
CELERY_SEND_TASK_ERROR_EMAILS = boolean()
CELERY_SEND_EVENTS = boolean()
CELERY_SEND_TASK_SENT_EVENT = boolean()
CELERYD_LOG_COLOR = boolean()
CELERY_REDIRECT_STDOUTS = boolean()

# known ints
CELERYD_CONCURRENCY = integer()
CELERYD_PREFETCH_MULTIPLIER = integer()
CELERY_AMQP_TASK_RESULT_EXPIRES = integer()
CELERY_AMQP_TASK_RESULT_CONNECTION_MAX = integer()
REDIS_PORT = integer()
REDIS_DB = integer()
BROKER_PORT = integer()
BROKER_CONNECTION_TIMEOUT = integer()
CELERY_BROKER_CONNECTION_MAX_RETRIES = integer()
CELERY_TASK_RESULT_EXPIRES = integer()
CELERY_MAX_CACHED_RESULTS = integer()
CELERY_DEFAULT_RATE_LIMIT = integer()
CELERYD_MAX_TASKS_PER_CHILD = integer()
CELERYD_TASK_TIME_LIMIT = integer()
CELERYD_TASK_SOFT_TIME_LIMIT = integer()
MAIL_PORT = integer()
CELERYBEAT_MAX_LOOP_INTERVAL = integer()

# known floats
CELERYD_ETA_SCHEDULER_PRECISION = float()

# known lists
CELERY_ROUTES = string_list()
CELERY_IMPORTS = string_list()
